<?php

namespace app\config;

use AlibabaCloud\SDK\Dm\V20151123\Dm;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dm\V20151123\Models\AddIpfilterRequest;
use AlibabaCloud\SDK\Dm\V20151123\Models\SingleSendMailRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use MillionMile\GetEnv\Env;

class Mail {

    /**
     * 使用AK&SK初始化账号Client
     * @return Dm Client
     */
    public static function createClient(){
        // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/311677.html。
        $config = new Config([
            // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => "LTAI5t745Tcw7xnV5KHVLAkn",
            // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" =>"HCK7za9tgZHEuUhiYazmHZ5DjPfrA1"
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/Dm
        $config->endpoint = "dm.aliyuncs.com";
        return new Dm($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        $singleSendMailRequest = new SingleSendMailRequest($args);
        $runtime = new RuntimeOptions([]);
        try {
            // 复制代码运行请自行打印 API 的返回值
            $返回信息 = $client->singleSendMailWithOptions($singleSendMailRequest, $runtime);
            return $返回信息;
        } catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 错误 message
            returnData(500,$error->message);
            // 诊断地址
//            var_dump($error->data["Recommend"]);
//            Utils::assertAsString($error->message);
        }
    }

    /**
     * 邮件发送
     * @param $email
     * @param $code
     * @param $type
     * @return void
     */
    public function send($email,$code,$type=1)
    {
        $邮件配置['addressType'] = 1;//地址类型。取值：0：为随机账号1：为发信地址
        $邮件配置['replyToAddress'] = false;//是否启用管理控制台中配置好回信地址 true false
        $邮件配置['toAddress'] = $email;//目标地址，多个 email 地址可以用逗号分隔，最多 100 个地址
//        $邮件配置['htmlBody'] = $args['htmlBody'] ?? "";//邮件 html 正文，限制 28K。
        $邮件配置['fromAlias'] = "天启";
        switch ($type){
            case 1://通用验证码
                $邮件配置['accountName'] = "tianqi@email.hstian.com";//管理控制台中配置的发信地址。
                $邮件配置['subject'] = '验证码';//邮件主题
                $邮件配置['textBody'] ="【天启】您的验证码：{$code}，您正进行身份验证，打死不告诉别人！";//邮件 text 正文，限制 28K。
                break;
            case 2://订单匹配
                $邮件配置['accountName'] = "bashuinternationality@email.bashupmekh.com";//管理控制台中配置的发信地址。
                $邮件配置['subject'] = '订单匹配通知';//邮件主题
                $邮件配置['textBody']="【久玩网络】您发布的广告已经被{$code}用户成功下单，请尽快处理，否则超过20分钟系统将会自动取消订单，感谢您的配合！";
                break;
            case 3://确认支付
                $邮件配置['accountName'] = "bashuinternationality@email.bashupmekh.com";//管理控制台中配置的发信地址。
                $邮件配置['subject'] = '确认支付通知';//邮件主题
                $邮件配置['textBody']="【久玩网络】您的订单已被{$code}用户确认支付，请尽快核对清楚后再确认放行，因个人失误导致的损失，后果自负，感谢您的配合！";
                break;
            case 4://确认放行
                $邮件配置['accountName'] = "bashuinternationality@email.bashupmekh.com";//管理控制台中配置的发信地址。
                $邮件配置['subject'] = '确认放行通知';//邮件主题
                $邮件配置['textBody']="【久玩网络】您的订单已被{$code}用户确认放行，该笔订单已完成结束，因个人失误导致的损失，后果自负，感谢您的配合！";
                break;
            default:
                $邮件配置['accountName'] = "tianqi@email.hstian.com";//管理控制台中配置的发信地址。
                $邮件配置['subject'] = '验证码';//邮件主题
                $邮件配置['textBody'] ="【天启】您的验证码：{$code}，您正进行身份验证，打死不告诉别人！";//邮件 text 正文，限制 28K。
        }
        $发送邮件 = \app\config\Mail::main($邮件配置);
        return $发送邮件;
    }
}